#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <assert.h>

#define  FILE_NAME "log.txt"

//每一个宏对应的值,只有一个比特位是1,彼此位置不重叠
//#define ONE (1<<0)
//#define TWO (1<<1)
//#define THREE (1<<2)
//#define FOUR (1<<3)
//
//void show(int flags)
//{
//    if(flags & ONE) printf("one\n");
//    if(flags & TWO) printf("two\n");
//    if(flags & THREE) printf("three\n");
//    if(flags & FOUR) printf("four\n");
//}

int main()
{      
    umask(0);
    // O_WRONLY 写入 | O_CREAT 不存在创建 | O_TRUNC 清空内容 | O_APPEND 追加 | O_RDONLY 读
    int fd = open(FILE_NAME, O_WRONLY | O_CREAT | O_TRUNC, 0666);
    if(fd < 0)
    {
        perror("open");
        return 1;
    }

    char buffer[1024];
    ssize_t num = read(fd, buffer, sizeof(buffer)-1);
    if(num > 0) buffer[num] = 0;
    printf("%s", buffer);

    // int cnt = 5;

    // char outBuffer[64];
    // while(cnt)
    // {
    //     sprintf(outBuffer, "%s:%d\n", "hello linux", cnt--);
    //     write(fd, outBuffer, strlen(outBuffer));
    // }
    close(fd);


   // show(ONE);
   // show(ONE | TWO);
   // show(ONE | TWO | THREE);
   // show(ONE | TWO | THREE | FOUR);

    ////r,w,r+(读写,不存在出错),w+(读写,不存在创建),a(append,追加),a+()
    ////FILE *fp = fopen(FILE_NAME, "w");
    //FILE *fp = fopen(FILE_NAME, "r");
    //if(NULL == fp)
    //{
    //    perror("fopen");
    //    return 1;
    //}

    //char buffer[64];
    //while(fgets(buffer, sizeof(buffer) - 1, fp) != NULL)
    //{
    //    buffer[strlen(buffer) - 1] = 0;
    //    puts(buffer);
    //}
 // //  int cnt = 5;
 // //  while(cnt)
 // //  {
 // //      fprintf(fp, "%s:%d\n", "hello linux", cnt--);
 // //  }

    //fclose(fp);
}